package com.webserver.controllers;

import com.webserver.http.HttpRequest;
import com.webserver.http.HttpResponse;
import com.webserver.vo.User;

import javax.imageio.IIOException;
import java.io.*;

/**
 * 处理用户相关业务
 */
public class UserController {
    private static String usersDir="./users";
    static {
        File userDir=new File(usersDir);
        if(!userDir.exists()){
            userDir.mkdirs();
        }
    }


    public void reg(HttpRequest request, HttpResponse response){
        System.out.println("开始处理用户注册！！！！！！！！！！！！！！！！！！");
        //1通过request获取用户表单提交的数据
        //获取reg.html中用户名这个输入框的值
        //这里request.getParameter()参数应当与页面上对于输入框的name属性的值一样
        String username=request.getParameter("username");
        String password=request.getParameter("password");
        String nickname=request.getParameter("nickname");
        String ageStr=request.getParameter("age");
        /*
                必要的验证：
               要求上述四项信息不能为null，并且年龄还要求必须是一个数字格式
               否则直接设置响应注册失败的提示页面：reg_input_error.html
               该页面剧中显示一行字：注册失败，输入信息有误。
         */
        if(username==null||password==null||nickname==null||ageStr==null ||
        !ageStr.matches("[0-9]+")){
            File file=new File("./webapps/myweb/reg_input_error.html");
            response.setEntity(file);
            return;
        }

        int age =Integer.parseInt(ageStr);
        System.out.println(username+","+password+","+nickname+","+ageStr);

        /*
            判断该用户是否存在，若存在则直接跳转:reg_have_user.html
            该页面居中显示一行字：该用户已存在，子能够重新注册
         */
        File file0=new File(usersDir+username+".obj");
        if(file0.exists()) {
            File file=new File("./webapps/myweb/reg_have_user.html");
            response.setEntity(file);
            return;
        }
        //2将该用户写入文件
        try(
                FileOutputStream fos=new FileOutputStream(file0);
                ObjectOutputStream oos=new ObjectOutputStream(fos);
                ){
            User user=new User(username,password,nickname,age);
            oos.writeObject(user);
        } catch (IOException e) {
            e.printStackTrace();
        }

        //3设置response响应登陆结果页面
        File file =new File("./webapps/myweb/reg_success.html");
        response.setEntity(file);
    }
}
